home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD006b.dsk / ELECTRONIC.LIBRARY.bas < prev    next >
BASIC Source File  |  2003-06-12  |  15KB  |  307 lines

  1. 0  REM  "ELECTRONIC LIBRARIAN"
  2. 1  REM  FROM NOV79 KILOBAUD P44
  3. 3  REM  BY JOSEPH JAY SANGER, MD
  4. 4  REM  MODIFIED FOR APPLESOFT
  5. 5  REM  BY ALAN LACY<CTRL-J>
  6. 6  REM  "AMPERSAND-INSTR FUNC"
  7. 7  REM  FROM JAN81 CALL APPLE
  8. 8  REM  P26 BY LEE REYNOLDS
  9. 9  REM  MODIFIED BY ALAN LACY<CTRL-J>
  10. 10  REM  VERSION CURRENT 3-9-82<CTRL-J>
  11. 12 ME = 900:MK = 8:D$ =  CHR$(4)
  12. 13  PRINT D$;"NOMON C,I,O"
  13. 14  DIM IN$(ME),MO$(12),KE$(200),JO$(20)
  14. 15  DIM CO$(7),K$(MK),SP(ME)
  15. 16  GOSUB 8000
  16. 18  POKE 1013,76: POKE 1014,0: POKE 1015,3
  17. 19  PRINT D$;"BLOAD AMP-INS2"
  18. 20  FOR I = 1 TO 20
  19. 25  READ JO$(I)
  20. 30  IF JO$(I) = "0"  THEN 100
  21. 35  NEXT 
  22. 40  GOTO 100
  23. 50  PRINT D$;"OPEN";IL$;",L";2 *MK +1
  24. 55  PRINT D$;"READ";IL$;",R0"
  25. 60  INPUT EX
  26. 65  PRINT D$;"CLOSE"
  27. 67  RETURN 
  28. 70  PRINT D$;"OPEN";IL$;",L";2 *MK +1
  29. 75  PRINT D$;"WRITE";IL$;",R0"
  30. 80  PRINT EX
  31. 85  PRINT D$;"CLOSE"
  32. 90  RETURN 
  33. 100 NM = I -1
  34. 110  FOR I = 1 TO 12: READ MO$(I): NEXT 
  35. 120  FOR I = 1 TO 200: READ KE$(I)
  36. 125  IF KE$(I) = "0"  THEN 200
  37. 130  NEXT 
  38. 200 NK = I -1
  39. 210 CO$(1) = "A":CO$(2) = "C":CO$(3) = "D":CO$(4) = "F":CO$(5) = "Q":CO$(6) = "S":CO$(7) = "L"
  40. 214  CALL  -936
  41. 215  VTAB 4: PRINT "GIVE THE NAME OF THE DATA AND INDX FILE DESIRED.": PRINT "INPUT 'NEW' TO START A NEW FILE."
  42. 216  INPUT "INPUT 'C' IF CATALOG NEEDED: ";Q$: IF Q$ = "C"  THEN  PRINT D$;"CATALOG": GOTO 215
  43. 218  IF Q$ = "NEW"  THEN  CALL  -936: PRINT : PRINT "GIVE NAME FOR NEW FILE (5 LETTERS)      ": INPUT Q$:DL$ = Q$ +".DATA":IL$ = Q$ +".INDX": GOTO 1000
  44. 220 DL$ = Q$ +".DATA":IL$ = Q$ +".INDX": GOSUB 8000
  45. 223  FLASH : PRINT "PLEASE STAND BY";: NORMAL : PRINT ".....": PRINT : PRINT 
  46. 225  GOSUB 50: IF EX = 0  THEN IN$(1) = "0": GOTO 300
  47. 230  PRINT D$;"OPEN";IL$;",L";2 *MK +1
  48. 235  FOR I = 1 TO EX
  49. 240  PRINT D$;"READ";IL$;",R";I
  50. 245  INPUT IN$(I)
  51. 250  IF IN$(I) = "0"  THEN NU = NU +1
  52. 260  NEXT 
  53. 270  PRINT D$;"CLOSE"
  54. 300 IN$(I) = "0": IF EX >0  THEN 350
  55. 305  INPUT "I CAN'T FIND AN INDEX FILE - IS THIS A  NEW LIBRARY ";A$: IF  LEFT$(A$,1) = "Y"  THEN 350
  56. 310  GOSUB 320: GOTO 350
  57. 320  PRINT "FORMING NEW INDEX": PRINT : PRINT : PRINT :NU = 0
  58. 323  PRINT D$;"OPEN";DL$;",L58"
  59. 324  FOR I = 1 TO EX
  60. 325  PRINT D$;"READ";DL$;",R";I
  61. 326  INPUT DU$: INPUT DU$: INPUT DU$: INPUT DU$: INPUT IN$(I)
  62. 327  IF IN$(I) = "0"  THEN NU = NU +1
  63. 328  NEXT 
  64. 329  PRINT D$;"CLOSE"
  65. 330 IN$(I) = "0": GOSUB 4100: RETURN 
  66. 350  GOSUB 8000: PRINT "CURRENT LIBRARY SIZE IS ";EX -NU;: PRINT " ENTRIES": PRINT : PRINT 
  67. 400  PRINT 
  68. 455  PRINT "COMMANDS:": PRINT "---------"
  69. 460  PRINT "A (DD AN ENTRY": PRINT "C (HANGE AN ENTRY": PRINT "D (ELETE AN ENTRY": PRINT "F (ORM A NEW INDEX"
  70. 470  PRINT "L (IST KEYS OR JOURNALS": PRINT "Q (UIT THE LIBRARY": PRINT "S (EARCH THE LIBRARY"
  71. 480  PRINT : INPUT "COMMAND: ";CO$
  72. 482  FOR I = 1 TO 7
  73. 484  IF  LEFT$(CO$,1) = CO$(I)  THEN  ON I GOTO 1000,2000,3000,310,4000,5000,6000
  74. 486  NEXT 
  75. 490  GOTO 400
  76. 1000  CALL  -936: VTAB 4: PRINT "ROOM FOR APPROX ";: PRINT ME -EX;" ENTRIES": PRINT : PRINT 
  77. 1010  INPUT "JOURNAL: ";MG$: IF  LEFT$(MG$,1) = "0"  THEN 350
  78. 1012 EM = 0: GOSUB 1200: IF EM = 1  THEN 1010
  79. 1020  INPUT "DATE: ";DA$: IF  LEFT$(DA$,1) = "0"  THEN 350
  80. 1022 ED = 0: GOSUB 1300: IF ED = 1  THEN 1020
  81. 1024  INPUT "PAGE NUMBER: ";PA$: IF  LEN(PA$) >3  THEN PA$ =  LEFT$(PA$,3)
  82. 1025  HTAB 36: PRINT "]";: HTAB 1: INPUT "TITLE: ";TI$: IF TI$ = "0"  THEN 350
  83. 1027 FL = 0: GOSUB 1600: IF FL = 1  THEN 1025
  84. 1028  GOSUB 7500: FOR J = 1 TO MK:K$(J) = "": NEXT 
  85. 1029  FOR J = 1 TO MK
  86. 1030  INPUT "KEY: ";K$(J): IF K$(J) = "0"  THEN K$(J) = "": GOTO 1050
  87. 1032 EK = 0: GOSUB 1400: IF EK = 1  THEN 1030
  88. 1034  NEXT 
  89. 1036  PRINT : PRINT : PRINT "THAT IS ALL THE KEYS ALLOWED": PRINT : PRINT 
  90. 1050  GOSUB 1100
  91. 1052  FOR J = 1 TO EX: IF IN$(J) = "0"  THEN 1070
  92. 1054  NEXT 
  93. 1056  IF J = ME  THEN  PRINT : PRINT "NO MORE ROOM IN LIBRARY": PRINT : GOTO 350
  94. 1058 EX = EX +1:J = EX
  95. 1070 IN$(J) = KY$: GOSUB 9000
  96. 1098  IF J <EX  THEN NU = NU -1
  97. 1099  GOTO 1000
  98. 1100 KY$ = "": FOR II = 1 TO MK:KY$ = KY$ +K$(II): NEXT : RETURN 
  99. 1200  FOR II = 1 TO NM: IF  LEFT$(MG$,3) =  LEFT$(JO$(II),3)  THEN 1210
  100. 1202  NEXT 
  101. 1205  PRINT : PRINT "INVALID JOURNAL": PRINT :EM = 1: RETURN 
  102. 1210  IF II <10  THEN 1230
  103. 1215 MG$ =  LEFT$( STR$(II),2): RETURN 
  104. 1230 MG$ = "0" + LEFT$( STR$(II),1): RETURN 
  105. 1300  IF  LEN(DA$) <5  THEN 1305
  106. 1301 A$ =  LEFT$(DA$,3)
  107. 1303  FOR II = 1 TO 12:MN$ =  LEFT$(MO$(II),3): IF MN$ = A$  THEN 1310
  108. 1304  NEXT 
  109. 1305  PRINT : PRINT "INVALID DATE - ENTER (MMMYY)": PRINT : PRINT :ED = 1: RETURN 
  110. 1310  IF II <10  THEN 1340
  111. 1312 B$ =  LEFT$( STR$(II),2): GOTO 1360
  112. 1340 B$ = "0" + LEFT$( STR$(II),1)
  113. 1360 DA$ =  RIGHT$(DA$,2) +B$: RETURN 
  114. 1400  FOR II = 1 TO NK: IF K$(J) = KE$(II)  THEN 1500
  115. 1402  NEXT : PRINT : PRINT "INVALID KEY": PRINT :EK = 1: RETURN 
  116. 1500 KK = 0: FOR JJ = 1 TO 26: IF II <26  THEN 1550
  117. 1502 II = II -26:KK = KK +1: NEXT 
  118. 1550  IF KK = 0  THEN S1$ = "0": GOTO 1570
  119. 1552 S1$ =  CHR$(64 +KK)
  120. 1570  IF II = 0  THEN K$(J) = S1$ +"0": RETURN 
  121. 1572 K$(J) = S1$ + CHR$(64 +II): RETURN 
  122. 1600 RL = 14 +2 *MK + LEN(TI$): IF RL <59  THEN FL = 0: RETURN 
  123. 1602  PRINT : PRINT "INPUT IS TOO LONG - SHORTEN TITLE BY": PRINT RL -58;" CHARACTERS":FL = 1: PRINT : RETURN 
  124. 2000 A$ = "CHANGED":IS = 0: GOSUB 3100: IF IS = 1  THEN 4000
  125. 2002 TP = J:IS$ = IN$(TP): PRINT "HERE ARE THE KEYS FOR THIS ENTRY:": PRINT : GOSUB 2200
  126. 2004  PRINT 
  127. 2040  INPUT "WHAT ITEM TO BE CHANGED (T,J,D,P,K,0) ";A$:A$ =  LEFT$(A$,1): IF A$ < >"0"  THEN 2050
  128. 2041 FL = 0: GOSUB 1600: IF FL = 1  THEN 2040
  129. 2042  IF CF = 1  THEN CF = 0: GOSUB 7500
  130. 2043  PRINT "HERE IS THE UPDATED ENTRY:": PRINT : GOSUB 5410
  131. 2044  PRINT : PRINT "HERE ARE THE KEYWORDS:": PRINT : GOSUB 2200: PRINT 
  132. 2045  PRINT "DO YOU WANT TO: A (BORT THE EDIT": PRINT "                C (HANGE ANOTHER ITEM": INPUT "  OR ARE YOU    D (ONE ";A$
  133. 2046 A$ =  LEFT$(A$,1): IF A$ = "D"  THEN J = TP: GOSUB 9000: GOTO 350
  134. 2047  IF A$ = "C"  THEN 2040
  135. 2048 IN$(TP) = IS$: GOTO 350
  136. 2050  IF A$ = "K"  THEN 2120
  137. 2052  INPUT "WHAT SHOULD THIS ITEM BE ";B$: IF B$ = "0"  THEN 2040
  138. 2054 EM = 0: IF A$ < >"J"  THEN 2090
  139. 2056 TE$ = MG$:MG$ = B$: GOSUB 1200: IF EM = 1  THEN MG$ = TE$
  140. 2058  GOTO 2040
  141. 2090  IF A$ = "T"  THEN TI$ = B$:CF = 1: GOTO 2040
  142. 2092  IF A$ = "P"  THEN PA$ = B$: GOTO 2040
  143. 2094 ED = 0: IF A$ < >"D"  THEN 2100
  144. 2096 TE$ = DA$:DA$ = B$: GOSUB 1300
  145. 2097  IF ED = 1  THEN DA$ = TE$
  146. 2098  GOTO 2040
  147. 2100  PRINT "WRONG LETTER! TRY AGAIN": GOTO 2040
  148. 2120  INPUT "A(DD, C(HANGE, OR D(ELETE A KEY: ";A$:A$ =  LEFT$(A$,1): IF A$ = "C"  THEN 2140
  149. 2121  IF A$ = "D"  THEN 2310
  150. 2123  IF A$ < >"A"  THEN 2180
  151. 2130 J = 1: INPUT "WHAT IS THE KEY ";K$(J): IF K$(J) = "0"  THEN 2040
  152. 2132 EK = 0: GOSUB 1400: IF EK = 1  THEN 2120
  153. 2134  IF  LEN(KY$) = 2 *MK  THEN  PRINT "NO MORE KEYWORDS ALLOWED THIS ENTRY": PRINT : GOTO 2040
  154. 2136 KY$ = KY$ +K$(J):IN$(TP) = KY$: GOTO 2040
  155. 2140 J = 1: INPUT "OLD KEY: ";K$(J): IF K$(J) = "0"  THEN 2040
  156. 2142 EK = 0: GOSUB 1400: IF EK = 1  THEN 2130
  157. 2144  FOR I = 1 TO ( LEN(KY$)/2): IF K$(J) =  MID$ (KY$,2 *I -1,2)  THEN 2150: NEXT 
  158. 2146  PRINT "THIS KEYWORD NOT APPLICABLE TO THIS     ENTRY": GOTO 2040
  159. 2150  INPUT "NEW KEY: ";K$(J): IF K$(J) = "0"  THEN 2040
  160. 2152 EK = 0: GOSUB 1400: IF EK = 1  THEN 2150
  161. 2154  IF 2 *I =  LEN(KY$)  THEN K2$ = "": GOTO 2160:K2$ =  RIGHT$(KY$, LEN(KY$) -2 *I)
  162. 2160  IF I = 1  THEN K1$ = "": GOTO 2170:K1$ =  LEFT$(KY$,(I -1) *2)
  163. 2170 KY$ = K1$ +K$(J) +K2$:IN$(TP) = KY$: GOTO 2040
  164. 2180  PRINT "INVALID INPUT": GOTO 2040
  165. 2200  FOR II = 1 TO ( LEN(KY$)/2): IF II/2 =  INT(II/2)  THEN  POKE 36,20
  166. 2204  GOSUB 7000: PRINT KE$(SN);: IF  INT(II/2) = II/2  THEN  PRINT 
  167. 2206  NEXT : IF  INT(I/3) < >I/3  THEN  PRINT 
  168. 2210  PRINT : RETURN 
  169. 2310 J = 1: INPUT "WHAT IS THE KEYWORD TO BE DELETED ";K$(J): IF K$(J) = "0"  THEN 2040
  170. 2312 EK = 0: GOSUB 1400: IF EK = 1  THEN 2040
  171. 2314  FOR I = 1 TO ( LEN(KY$)/2): IF  MID$ (KY$,2 *I -1,2) = K$(J)  THEN 2370
  172. 2316  NEXT 
  173. 2350  PRINT : PRINT "THIS KEY NOT APPLICABLE TO THIS ENTRY": GOTO 2040
  174. 2370  IF 2 *I =  LEN(KY$)  THEN K2$ = "": GOTO 2380
  175. 2372 K2$ =  RIGHT$(KY$, LEN(KY$) -2 *I)
  176. 2380  IF I = 1  THEN K1$ = "": GOTO 2385
  177. 2382 K1$ =  LEFT$(KY$,2 *I -2)
  178. 2385 KY$ = K1$ +K2$:IN$(JJ) = KY$: GOTO 2040
  179. 3000 IS = 0:A$ = "DELETED": GOSUB 3100: IF IS = 1  THEN  GOTO 350
  180. 3002 IN$(J) = "0":NU = NU +1:KY$ = "0": GOSUB 9000
  181. 3004  CALL  -936: VTAB 4: PRINT "ENTRY DELETED FROM LIBRARY": PRINT : PRINT : GOTO 350
  182. 3100  CALL  -936: VTAB 4: PRINT "WHAT IS THE NUMBER OF ENTRY TO BE ": PRINT A$;" (OBTAINED FROM MOST ": INPUT "RECENT SEARCH) ";I: IF I = 0  THEN 400
  183. 3102  IF I >NS  THEN  PRINT : PRINT : PRINT "INVALID ENTRY NUMBER": GOTO 3120
  184. 3104 J = SP(I): IF J >EX  THEN 3120
  185. 3106  PRINT : PRINT "IS THIS THE CORRECT ENTRY?": PRINT : PRINT :M = 1: GOSUB 5400:KY$ = DU$
  186. 3108  INPUT N$:N$ =  LEFT$(N$,1): IF N$ = "Y"  THEN  RETURN 
  187. 3120  PRINT : PRINT "CONDUCT ANOTHER SEARCH AND REPEAT": PRINT :IS = 1: RETURN 
  188. 4000  CALL  -936: VTAB 4: PRINT " THIS SESSION IS TERMINATED....BYE!": END 
  189. 4100  PRINT "SAVING UPDATED INDEX FILE": PRINT : PRINT 
  190. 4105  PRINT D$;"OPEN";IL$;",L";MK *2 +1
  191. 4110  FOR I = 1 TO EX
  192. 4115  PRINT D$;"WRITE";IL$;",R";I
  193. 4120  PRINT IN$(I)
  194. 4125  NEXT 
  195. 4130  PRINT D$;"CLOSE"
  196. 4135  RETURN 
  197. 5000  CALL  -936: PRINT "FOR LISTING OF ALL RECORDS, INPUT '0'.": PRINT "'0' ALSO ENDS KEY INPUT.": PRINT 
  198. 5005  FOR J = 1 TO MK:K$(J) = "": NEXT : FOR J = 1 TO MK
  199. 5010  INPUT "KEY:  ";K$(J): IF  LEFT$(K$(J),1) = "0"  THEN K$(J) = "": GOTO 5030
  200. 5012 EK = 0: GOSUB 1400: IF EK = 1  THEN 5010
  201. 5014  NEXT 
  202. 5030  GOSUB 1100: PRINT "IF YOU WANT HARDCOPY TYPE 'YES' ": INPUT "OTHERWISE HIT <RETURN> ";PF$:PF$ =  LEFT$(PF$,1): CALL  -936: PRINT "HIT ANY KEY TO ABORT LISTING"
  203. 5032  IF PF$ = "Y"  THEN  PRINT D$;"PR#1": POKE 1785,0
  204. 5034  GOSUB 5090: PRINT : IF KY$ < >""  THEN 5040
  205. 5036  PRINT "COMPLETE LISTING OF ALL ENTRIES": GOTO 5050
  206. 5040  PRINT "LIBRARY SEARCH FOR ARTICLES RELATED TO:": PRINT 
  207. 5042  FOR II = 1 TO ( LEN(KY$)/2): POKE 36,8: PRINT "-";: POKE 36,10: GOSUB 7000: PRINT KE$(SN): NEXT 
  208. 5050  PRINT : GOSUB 5100: IF NS = 0  THEN  PRINT "NO SUCH ARTICLES IN LIBRARY"
  209. 5055  PRINT : GOSUB 5090: PRINT : PRINT 
  210. 5060  IF PF$ < >"Y"  THEN 400
  211. 5062  PRINT : PRINT : PRINT : PRINT : PRINT 
  212. 5070  PRINT "TYPE 'NO' TO TURN PRINTER OFF": INPUT AA$: IF  LEFT$(AA$,1) = "N"  THEN  PRINT D$;"PR#0"
  213. 5072  GOTO 350
  214. 5090 DA = 39: IF PF$ = "Y"  THEN DA = 76
  215. 5092  FOR I = 1 TO DA: PRINT "-";: NEXT : PRINT : RETURN 
  216. 5100 M = 1: GOSUB 5300
  217. 5110 SK = ( LEN(KY$)/2): FOR J = 1 TO EX: IF IN$(J) = "0"  THEN 5190
  218. 5112  IF SK = 0  THEN 5160
  219. 5130  FOR I = 1 TO SK
  220. 5132 BB$ =  MID$ (KY$,2 *I -1,2)
  221. 5133  & IN$(J),BB$
  222. 5134  IF  PEEK(26) = 0  THEN 5190
  223. 5150  NEXT I
  224. 5160 SP(M) = J: GOSUB 5400:M = M +1
  225. 5190 AF = 0: GOSUB 5500: IF AF = 1  THEN  INPUT "LISTING ABORTED-<RETURN> TO CONTINUE ";A$: GOTO 5200
  226. 5192  IF J = EX  THEN  INPUT "THAT'S ALL-HIT <RETURN> TO CONTINUE ";A$
  227. 5195  NEXT J
  228. 5200  IF PF$ = "Y"  THEN  PRINT "<CTRL-G><CTRL-G><CTRL-G>":PF$ = "N": PRINT D$;"PR#0"
  229. 5210 NS = M -1: RETURN 
  230. 5300  FOR I = 1 TO EX:SP(I) = 0: NEXT : RETURN 
  231. 5400  PRINT D$;"OPEN";DL$;",L58"
  232. 5402  PRINT D$;"READ";DL$;",R";J
  233. 5404  INPUT MG$: INPUT DA$: INPUT PA$: INPUT TI$: INPUT DU$
  234. 5406  PRINT D$;"CLOSE"
  235. 5410  PRINT M;".";: POKE 36,7: PRINT TI$
  236. 5412  POKE 36,7: PRINT JO$( VAL(MG$))
  237. 5414  POKE 36,7: PRINT MO$( VAL( RIGHT$(DA$,2)));" 19"; LEFT$(DA$,2);
  238. 5416  POKE 36,25: PRINT "PAGE ";PA$: PRINT : IF M/5 =  INT(M/5)  THEN  GOSUB 6500
  239. 5418  RETURN 
  240. 5500  IF  PEEK( -16384) <128  THEN  RETURN 
  241. 5505  POKE  -16368,0: GOSUB 5090: IF PF$ = "Y"  THEN 5070
  242. 5510 AF = 1: RETURN 
  243. 6000  CALL  -936: VTAB 4: INPUT "DO YOU WANT A LIST OF KEYS OR JOURNALS ";A$
  244. 6002  CALL  -936:A$ =  LEFT$(A$,1): IF A$ = "J"  THEN 6200
  245. 6004  IF A$ < >"K"  THEN 350
  246. 6005  PRINT D$"PR#1"
  247. 6006  FOR I = 1 TO NK: IF I/2 =  INT(I/2)  THEN  POKE 36,20
  248. 6007  PRINT KE$(I);: IF  INT(I/2) = I/2  THEN  PRINT 
  249. 6010  NEXT 
  250. 6012  IF  INT(I/2) < >I/2  THEN  PRINT 
  251. 6013  PRINT D$"PR#0"
  252. 6014  PRINT : GOSUB 6500: GOTO 350
  253. 6200  FOR I = 1 TO NM: IF I/2 =  INT(I/2)  THEN  POKE 36,20
  254. 6202  PRINT JO$(I);: IF  INT(I/2) = I/2  THEN  PRINT 
  255. 6205  IF  INT(I/42) = I/42  THEN  GOSUB 6500
  256. 6210  NEXT I
  257. 6215  IF  INT(I/3) < >I/3  THEN  PRINT 
  258. 6220  PRINT : GOSUB 6500: GOTO 350
  259. 6500  IF PF$ = "Y"  THEN  RETURN 
  260. 6510  INPUT "TYPE <RETURN> TO CONTINUE ";A$: PRINT : RETURN 
  261. 7000 S1$ =  MID$ (KY$,2 *II -1,1):S2$ =  MID$ (KY$,2 *II,1): IF S1$ = "0"  THEN S1 = 0: GOTO 7200
  262. 7002 S1 = ( ASC(S1$) -64) *26
  263. 7200  IF S2$ = "0"  THEN S2 = 0: GOTO 7400
  264. 7202 S2 =  ASC(S2$) -64
  265. 7400 SN = S1 +S2: RETURN 
  266. 7500  FOR L = 1 TO  LEN(TI$): IF  MID$ (TI$,L,1) < >"^"  THEN 7600
  267. 7502 TL$ =  LEFT$(TI$,L -1):TR$ =  RIGHT$(TI$,( LEN(TI$) -L)):TI$ = TL$ +"/" +TR$
  268. 7600  NEXT L: RETURN 
  269. 8000  CALL  -936: VTAB 4
  270. 8002  PRINT "---------------------------------------"
  271. 8004  PRINT "! COMPUTER MAGAZINE RETRIEVAL SYSTEM  !"
  272. 8006  PRINT "---------------------------------------": PRINT : PRINT : PRINT : RETURN 
  273. 9000  PRINT D$;"OPEN";DL$;",L58"
  274. 9002  PRINT D$;"WRITE";DL$;",R";J
  275. 9004  PRINT MG$: PRINT DA$: PRINT PA$: PRINT TI$: PRINT KY$
  276. 9006  PRINT D$;"CLOSE"
  277. 9010  PRINT D$;"OPEN";IL$;",L";2 *MK +1
  278. 9012  PRINT D$;"WRITE";IL$;",R";J
  279. 9014  PRINT IN$(J)
  280. 9016  PRINT D$;"CLOSE"
  281. 9020  GOSUB 70
  282. 9030  RETURN 
  283. 9100  DATA BYTE,KILOBAUD,INTERFACE AGE,MICRO,CALL APPLE,CREATIVE COMPUTING,PERSONAL COMPUTING,CONTACT,NIBBLE,SOFTSIDE,ORCHARD,SYSTEMS,TALK,0
  284. 9200  DATA JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY
  285. 9210  DATA AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER
  286. 9500  DATA *STAR*,3D,6502,ACCOUNTING,ADDRESS,ALGEBRA,ALGORITHM
  287. 9505  DATA AMORTIZATION,AMPERSAND,ANALYSIS,APPLE,APPLESOFT,APPLICATION,ARRAY,ART
  288. 9510  DATA ARTICLE,ARTIFICIAL INTELLIGENCE,ASSEMBLY,ASTROLOGY,ASTRONOMY,AUDIO,BALLISTICS
  289. 9515  DATA  BASIC,BIOFEEDBACK,BIOLOGY,BIORYTHM,BOARD,BOOKKEEPING,BUDGET,BUSINESS
  290. 9520  DATA  CAI,CALCULATION,CALCULUS,CALENDAR,CARTOGRAPHY,CHARTS,CHEMISTRY,CHESS,CODES
  291. 9525  DATA  COLOR,COMMUNICATION,CONTROL,CONVERSION,CP/M,CROSS-INDEXING,CRYPTOGRAPHY,CURVE
  292. 9530  DATA  CYBERNETICS,DATA,DATA BASE,DATES,DEBUGGING,DECISION MAKING,DEPRECIATION,DESIGN
  293. 9535  DATA  DIFFERENTIAL,DIGITIZER,DISK,DIVIDE,DOS,ECONOMICS,EDITING,EDUCATION
  294. 9540  DATA  ENGINEERING,EQUATIONS,ERROR,EVALUATION,FILES,FINANCE,FLIGHT,FORECASTING
  295. 9545  DATA  FORTRAN,FREQUENCY,GAMBLING,GAME,GENEALOGY,GENERAL LEDGER,GENETICS,GEOMETRY
  296. 9550  DATA  GRAPHICS,GRAPHICS PAD,GRAPHS,HARDWARE,HASHING,HEALTH,HIRES,HOME
  297. 9555  DATA  HOUSEHOLD,HUMOR,I/O,INDEXING,INTEGER,INTELLIGENCE,INVENTORY,INVENTORY
  298. 9560  DATA  LANGUAGE,LISP,LOGIC,LORES,MACHINE,MAILING LIST,MANAGEMENT,MAPPING
  299. 9565  DATA  MASS STORAGE,MATH,MATRIX,MEDICAL,MODEL,MODEM,MONITOR,MULTIPLY
  300. 9570  DATA  MUSIC,NAVIGATION,NUMERICAL,ORGANIZATION,PASCAL,PATTERN RECOGNITION,PAYROLL
  301. 9575  DATA  PERSONAL,PHYSICS,PLOTTER,PLOTTING,PREDICTIONS,PRINTER,PROBABILITY,PROBLEM
  302. 9580  DATA  PROBLEM SOLVING,PROGRAM,PROGRAMMING,PUZZLE,QUEUING,REAL ESTATE,RETRIEVAL,ROBOTICS
  303. 9585  DATA  SCIENCE,SEARCH,SECURITY,SHAPE,SIMULATION,SOFTWARE,SORT,SOUND
  304. 9590  DATA  SOURCE,SPEECH,SPORTS,STATISTICS,STOCK MARKET,STRATEGY,STRING,STRUCTURE
  305. 9595  DATA  STRUCTURE,SUBROUTINE,TAXES,TEXT,TEXT EDITING,THEORY,THREE-DEE,TIME
  306. 9600  DATA  TOKEN,TRAJECTORY,TREND,TRIGONOMETRY,TUTORIAL,UTILITY,VIDEO,WAVES
  307. 9605  DATA   WEATHER,WORD PROCESSING,Z-80,0